/**
 * 作者: wgx
 * 日期: 2025-05-06 15:25:54
 * 备注: 用户大世界事件坑位数据
 */
package com.motu.monstercity.server.game.userdata;

import com.motu.monstercity.server.game.base.AllParam;
import com.motu.monstercity.server.game.commondata.world.WorldConstant;
import com.motu.monstercity.server.game.logic.WorldManager;
import com.motu.vertx.module.utility.model.EntityManager;
import com.motu.vertx.module.utility.toolset.TimeUtils;

public class UserWorldEventLocation extends UserWorldEventLocationModel {
    public UserWorldEventLocation() {
        super();
    }

    public UserWorldEventLocation(long userId, int locationId, int type) {
        super();
        putUserId(userId);
        putLocationId(locationId);
        putType(type);
    }

    // 超过15小时表示已过期
    public boolean isExpire(long curTime) {
        if (getStartTime() == 0) {// starttime =0表示无过期时间
            return false;
        }

        long durationTime = WorldConstant.WORLD_EVENT_TIME;// 事件持续时间，15个小时
        if (isUrgentType()) {// 紧急触发的事件，有效时间只有300秒
            durationTime = AllParam.WORLD_URGENT_EVENT_TIME;
        }

        if (curTime > getStartTime() + durationTime) {
            return true;
        } else {
            return false;
        }
    }

    // 事件是否可以清除，无队伍正在行军时可以清除, 队伍到达事件点的时候会删除UserWorldEventLocationTeam 数据
    public boolean isNotTeamMarch() {
        long count = WorldManager.countLocationTeam(getUserId(), getLocationId());
        if (count == 0) {
            return true;
        } else {
            return false;
        }
    }

    // 清除事件,重置到初始状态
    public void cleanData() {
        putEventId(0);
        putStartTime(0L);
        putForces(0L);
        putMonsterLevel(0);
        putDistance(0);
        putOnewayTime(0);
        putFailNum(0);
        putTotalForces(0L);
        putEventQueueDbid(0L);
        putRandomReward("");
        putBoxReward("");

        EntityManager.delEntity(UserWorldEventLocationTeam.class, WorldManager.getLocationUnique(getUserId(), getLocationId()));// 删除该事件坑位所有的行军信息
    }

    // 是否普通触发的事件，0点，8点16点
    public boolean isCommonType() {
        return getType() == WorldConstant.WORLD_EVENT_LOCATION_TYPE_0;
    }

    //是否使用特殊道具额外触发的事件
    public boolean isExtraType() {
        return getType() == WorldConstant.WORLD_EVENT_LOCATION_TYPE_1;
    }

    //是否悬赏触发的事件
    public boolean isOfferType() {
        return getType() == WorldConstant.WORLD_EVENT_LOCATION_TYPE_5;
    }

    // 是否紧急触发的事件
    public boolean isUrgentType() {
        return getType() == WorldConstant.WORLD_EVENT_LOCATION_TYPE_6;
    }

    // 是否世界Boss的事件
    public boolean isWorldBossType() {
        return getType() == WorldConstant.WORLD_EVENT_LOCATION_TYPE_7;
    }


}
